﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 场景：
/**
 * 员工请假需要经过不同级别的领导审批。根据请假天数的不同，审批权限也会不同
 * 请假1-2天由经理审批
 * 3-6天由经理 + HR 审批
 * 超过6天 经理 + HR + 总经理审批
 */

namespace ChainofResponsibilityPattern1
{
    // 抽象处理者
    // 抽象处理者是整个处理链路的核心，使用appendNext()链接下一个处理节点
    // 抽象方法handle()是每一个实现者必须实现的类
    // 不同处理对象在自己的实现类中实现自己的处理逻辑
    abstract class AbstractApprover
    {
        private AbstractApprover nextAbstractApprover;

        public AbstractApprover Next()
        {
            return nextAbstractApprover;
        }

        public AbstractApprover appendNext(AbstractApprover next)
        {
            this.nextAbstractApprover = next;
            return this;
        }

        public abstract void handle(personRequest personRequest);
    }
}
